/*
 * Copyright © 2018 CODESTD.COM Inc. All rights reserved.
 */
package com.codestd.security.shiro.jwt;

import com.codestd.security.model.SysUser;
import com.codestd.security.redis.model.RefreshToken;

import java.util.Optional;

/**
 * 维护refreshToken
 *
 * @author jaune
 * @since 1.0.0
 */
public interface MobileTokenManager {

    /**
     * 创建refreshToken
     * @param user 用户信息
     * @param type 设备类型，1-安卓,2-IOS
     * @return refreshToken
     */
    String createRefreshToken(SysUser user, String type);

    /**
     * 删除refreshToken，在本实例中一个用户只能在同一类设备中登录一次。
     * @param userId 用户ID
     * @param type 设备类型，1-安卓,2-IOS
     */
    void deleteRefreshToken(String userId, String type);

    /**
     * 从缓存中获取refreshToken
     * @param refreshToken token内容
     * @return Optional对象
     */
    Optional<RefreshToken> getRefreshToken(String refreshToken);
}
